package com.easyctba.core.service;

import com.easyctba.common.core.domain.R;
import com.easyctba.core.domain.CtbaFiasCategory;
import com.easyctba.core.domain.bo.FiasCategoryAddBo;
import com.easyctba.core.domain.vo.CtbaFiasCategoryVo;
import com.easyctba.core.domain.bo.CtbaFiasCategoryBo;
import com.easyctba.common.mybatis.core.page.TableDataInfo;
import com.easyctba.common.mybatis.core.page.PageQuery;
import com.easyctba.core.domain.vo.FiasCascaderVo;
import com.easyctba.core.domain.vo.FiasCategoryAndClassVo;
import com.easyctba.core.domain.vo.FiasTransferVo;

import java.util.Collection;
import java.util.List;

/**
 * fias大类Service接口
 *
 * @author Huang
 * @date 2024-03-22
 */
public interface ICtbaFiasCategoryService {

    /**
     * 查询fias大类
     */
    CtbaFiasCategoryVo queryById(Long id);

    /**
     * 查询fias大类列表
     */
    TableDataInfo<CtbaFiasCategoryVo> queryPageList(CtbaFiasCategoryBo bo, PageQuery pageQuery);

    /**
     * 查询fias大类列表
     */
    List<CtbaFiasCategoryVo> queryList(CtbaFiasCategoryBo bo);

    /**
     * 新增fias大类
     */
    Boolean insertByBo(CtbaFiasCategoryBo bo);

    /**
     * 修改fias大类
     */
    Boolean updateByBo(CtbaFiasCategoryBo bo);

    /**
     * 校验并批量删除fias大类信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    R<Void> addCategory(FiasCategoryAddBo bo);

    R<List<CtbaFiasCategory>> list(Long id);

    R<Void> delete(Long id);

    R<List<FiasCategoryAndClassVo>> detail(Long id);

    R<List<FiasCascaderVo>> cascader(Long id);

    R<List<FiasTransferVo>> transfer(Long id);

    List<String> getCategoryNames(List<Long> categoryIds);
}
